INET::UploadedFile SaveToStorage Method

Syntax

.SaveToStorage as L (DestinationStorage as A5Storage::DataContainer, TargetMember as C, ContentType as C)

.SaveToStorage as L (DestinationStorage as A5Storage::SubContainer, TargetMember as C, ContentType as C)

Arguments

DestinationStorageA5Storage::DataContainerA5Storage::SubContainer

The Storage container to upload the file. Can be either a A5Storage::DataContainer or A5Storage::SubContainer.

TargetMemberCharacter

The name of the object to set or create in the Storage container.

ContentTypeCharacter

The content type. E.g. "text/html"

Returns

ResultLogical

Returns .T. if the operation succeeds, otherwise .F. (see .CallResult for additional error information.)

Description

Save the uploaded file directly to Storage. This method saves the file from disk directly to the Storage using buffered reads and writes.

Example: Basic Example

if eval_valid("Request.Variables.File1")

    DiskContainerName = "C:\Temp\Disk"
    DiskConnectionString = "Provider='Disk';Container='" + DiskContainerName + "';"

    File = Request.Variables.File1
    FileName = File.FileName
    FileSize = File.Size
    FileContentType = File.ContentType

    ? "File uploaded: " + FileName + " (" + FileSize + " bytes)<br/>"

    dim Storage as A5Storage::SubContainer = null_value()

    CallResult = A5Storage::SubContainer::Open(Storage, DiskConnectionString, "Test1")
    if CallResult.Success
        if File.SaveToStorage(Storage, FileName, FileContentType)
            ? "File written to storage: " + FileName + " (" + FileSize + " bytes."
        else
            ? "File write to storage failed: " + File.CallResult.Text + "<br/>"
        end if
    else
        ? "File upload failed.  Unable to open storage." + CallResult.Text + "<br/>"
    end if
end if

Example: Complete A5W Page Example

This example demonstrates how to upload to each of the Storage provider types available: 'Azure', 'AmazonS3', and 'Disk'.

<html>
<head><title>File Upload</title></head>
<body>
<%a5 
if eval_valid("Request.Variables.File1")

    DiskContainerName = "C:\Temp\Disk"
    DiskConnectionString = "Provider='Disk';Container='" + DiskContainerName + "';"

    AzureAccountName = "a5webservertest"
    AzureAccessKey = "<your access key here>"
    AzureContainerName = "a5webservertest"
    AzureConnectionString = "Provider='Azure';Account='" + AzureAccountName + "';AccessKey='" + AzureAccessKey + "';Container='" + AzureContainerName +"';"

    AzureTestContainerName = "a5webservertest"
    AzureTestConnectionString = "Provider='Azure';UseDevelopmentStorage='true';Container='" + AzureContainerName +"';"

    AmazonAccessKey = "<your access key>"
    AmazonSecretKey = "<your amazon secret key>"
    AmazonContainerName = "A5WebServerTest-Application"
    AmazonConnectionString = "Provider='AmazonS3';AccessKey='" + AmazonAccessKey + "';SecretKey='" + AmazonSecretKey + "';Container='" + AmazonContainerName +"';"

    dim ConnectionStrings[4] as C = [ DiskConnectionString, AzureConnectionString, AzureTestConnectionString, AmazonConnectionString ]

    dim Timer as Util::Timer 
    File = Request.Variables.File1
    FileName = File.FileName
    FileSize = File.Size
    FileContentType = File.ContentType

    ? "File uploaded: " + FileName + " (" + FileSize + " bytes)<br/><br/>"

    dim Storage as A5Storage::SubContainer = null_value()
    for i = 1 to ConnectionStrings.Size()
        ConnectionString = ConnectionStrings[i]
        ? "Opening connection string at index " + i + " - " + ConnectionString + "." + "<br/>"


        Storage = null_value()

        CallResult = A5Storage::SubContainer::Open(Storage, ConnectionString, "Test1")
        if CallResult.Success
            dim UploadTimer as Util::Timer
            UploadTimer.Start()

            if File.SaveToStorage(Storage, FileName, FileContentType)
                ? "File written to storage: " + FileName + " (" + FileSize + " bytes in " + UploadTimer.ElapsedMilliseconds + " milliseconds.)<br/>"
            else
                ? "File write to storage failed: " + File.CallResult.Text + "<br/>"
            end if
        else
            ? "File upload failed.  Unable to open storage." + CallResult.Text + "<br/>"
        end if
        ? "<br/>"
    next
    Response.Write("<hr/>")
    ? "Total time to save: " + Timer.ElapsedMilliseconds + " milliseconds." + "<br/>"
    Response.Write("<hr/>")

end if
%>

<form action="<%a5 ?Request.ScriptName%>" method="post" enctype="multipart/form-data">
<input type="file" name="File1"/><br/>
<input type="submit" name="cmd" value="Upload File"/>
</form>

</body>
</html>

See Also